ExtJS একটি শক্তিশালী ফ্রেমওয়ার্ক যা বিভিন্ন ধরনের UI কম্পোনেন্ট সরবরাহ করে এবং এগুলির মধ্যে Interaction ও Event Handling এর মাধ্যমে অ্যাপ্লিকেশনের কার্যক্ষমতা বৃদ্ধি করা যায়। ExtJS কম্পোনেন্টগুলির মধ্যে ইন্টারঅ্যাকশন এবং ইভেন্ট হ্যান্ডলিং গুরুত্বপূর্ণ ভূমিকা পালন করে, যা অ্যাপ্লিকেশনকে ইন্টারেক্টিভ এবং ব্যবহারকারী-বান্ধব করে তোলে।
ExtJS এ, components হল UI উপাদান (যেমন গ্রিড, প্যানেল, বাটন, টেক্সটফিল্ড ইত্যাদি), যেগুলি একে অপরের সাথে ইন্টারঅ্যাক্ট করতে পারে। Interaction এর মাধ্যমে বিভিন্ন কম্পোনেন্টের মধ্যে তথ্য আদান-প্রদান, ডেটা আপডেট এবং অন্যান্য কার্যকলাপ করা যায়।
ধরা যাক, একটি ComboBox
এবং একটি Grid
কম্পোনেন্ট রয়েছে এবং আমরা ComboBox
থেকে একটি সিলেক্ট করা মানের উপর ভিত্তি করে Grid
কম্পোনেন্টের ডেটা আপডেট করতে চাই।
Ext.create('Ext.panel.Panel', {
renderTo: Ext.getBody(),
width: 500,
height: 400,
title: 'ComboBox Interaction Example',
layout: 'vbox',
items: [
{
xtype: 'combo',
fieldLabel: 'Select Category',
store: ['Category 1', 'Category 2', 'Category 3'],
listeners: {
select: function(combo, records) {
// ComboBox এর সিলেকশন পরিবর্তিত হলে Grid আপডেট হবে
var selectedCategory = records[0].get('field1');
grid.getStore().filter('category', selectedCategory);
}
}
},
{
xtype: 'grid',
reference: 'grid',
title: 'Data Grid',
store: {
fields: ['id', 'name', 'category'],
data: [
{ id: 1, name: 'Item 1', category: 'Category 1' },
{ id: 2, name: 'Item 2', category: 'Category 2' },
{ id: 3, name: 'Item 3', category: 'Category 3' }
]
},
columns: [
{ text: 'ID', dataIndex: 'id' },
{ text: 'Name', dataIndex: 'name' },
{ text: 'Category', dataIndex: 'category' }
]
}
]
});
এখানে, ComboBox
এর মধ্যে একটি সিলেকশন পরিবর্তন হলে, তার উপর ভিত্তি করে Grid
এর ডেটা আপডেট করা হচ্ছে। এটি একটি Interaction এর উদাহরণ, যেখানে দুটি কম্পোনেন্ট একে অপরের সাথে ইন্টারঅ্যাক্ট করছে।
ExtJS তে, কম্পোনেন্টগুলির সাথে ইভেন্ট হ্যান্ডলিং অত্যন্ত গুরুত্বপূর্ণ। প্রতিটি কম্পোনেন্টের নিজস্ব ইভেন্ট থাকে (যেমন click
, change
, select
ইত্যাদি), এবং আপনি এই ইভেন্টগুলো হ্যান্ডল করার মাধ্যমে অ্যাপ্লিকেশনের আচরণ নিয়ন্ত্রণ করতে পারেন।
একটি Button
কম্পোনেন্টের click
ইভেন্ট হ্যান্ডল করা:
Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody(),
handler: function() {
Ext.Msg.alert('Button Clicked', 'You clicked the button!');
}
});
এখানে, handler
প্রপার্টি ব্যবহার করে বাটনের click
ইভেন্টটি হ্যান্ডল করা হয়েছে। বাটনে ক্লিক করার সাথে সাথে একটি অ্যালার্ট ডায়ালগ বক্স প্রদর্শিত হবে।
একটি TextField
কম্পোনেন্টে ব্যবহারকারী কোন টেক্সট প্রবেশ করলে change
ইভেন্টটি ট্রিগার হয়:
Ext.create('Ext.form.field.Text', {
fieldLabel: 'Enter Text',
renderTo: Ext.getBody(),
listeners: {
change: function(field, newValue, oldValue) {
console.log('Text changed from ' + oldValue + ' to ' + newValue);
}
}
});
এখানে, change
ইভেন্টটি যখন ট্রিগার হবে, তখন এটি পরিবর্তিত মান এবং আগের মানকে কনসোলে লগ করবে।
Grid
কম্পোনেন্টে একটি রো ক্লিক করা হলে ইভেন্ট হ্যান্ডল করা:
Ext.create('Ext.grid.Panel', {
title: 'Click a Row',
renderTo: Ext.getBody(),
store: {
fields: ['name', 'email'],
data: [
{ name: 'John', email: 'john@example.com' },
{ name: 'Jane', email: 'jane@example.com' }
]
},
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email' }
],
listeners: {
itemclick: function(grid, record) {
Ext.Msg.alert('Row Clicked', 'You clicked: ' + record.get('name'));
}
}
});
এখানে, গ্রিডে একটি রো ক্লিক করার পর itemclick
ইভেন্টটি ট্রিগার হয় এবং একটি অ্যালার্ট ডায়ালগ বক্সে ক্লিক করা রোয়ের নাম প্রদর্শিত হয়।
Event Propagation এবং Event Bubbling হল দুটি গুরুত্বপূর্ণ ধারণা যা ইভেন্ট হ্যান্ডলিংয়ের সময় ঘটতে পারে:
ইভেন্ট বুবলিং উদাহরণ:
Ext.create('Ext.panel.Panel', {
title: 'Parent Panel',
renderTo: Ext.getBody(),
listeners: {
click: function() {
alert('Parent Panel clicked!');
}
},
items: [{
xtype: 'button',
text: 'Click Me',
listeners: {
click: function() {
alert('Button clicked!');
}
}
}]
});
এখানে, প্রথমে Button
ক্লিক করলে বাচ্চা কম্পোনেন্টের ইভেন্ট হ্যান্ডল হবে, তারপর প্যারেন্ট কম্পোনেন্টের ইভেন্ট হ্যান্ডল হবে (ইভেন্ট বাবলিং)।
ComboBox
থেকে একটি মান সিলেক্ট করা হলে গ্রিডের ডেটা আপডেট করা।click
, change
, select
ইত্যাদি) হ্যান্ডল করার প্রক্রিয়া। আপনি কম্পোনেন্টের নির্দিষ্ট ইভেন্টের উপর ভিত্তি করে অ্যাপ্লিকেশনের আচরণ নিয়ন্ত্রণ করতে পারেন।ExtJS তে কম্পোনেন্টের মধ্যে Interaction এবং ইভেন্ট হ্যান্ডলিং ব্যবহার করে আপনি একটি ইন্টারেক্টিভ এবং ব্যবহারকারী-বান্ধব অ্যাপ্লিকেশন তৈরি করতে পারেন।